// 引入fastify框架
const fastify = require('fastify')
// 引入fastify/cors框架已解决跨域
const cors = require('@fastify/cors')
// 引入MySQl功能依赖
const mysql = require('mysql')

/*
增：POST
删：DELETE
改：PUT
查：GET
*/

// 实例化
const app = fastify()
// 解决浏览器跨域问题
app.register(cors)

// MySQL数据库连接参数
const db = {
    // ip
    host: '127.0.0.1',
    // 端口
    port: 3306,
    // 用户名
    user: 'root',
    // 密码
    password: 'qq745483318',
    // 数据库名
    database: 'fastify_test'
}
let connection = mysql.createConnection(db)

// SQL语句
// 增： INSERT INTO test (id,name,ps)VALUES(id,name,ps)
// 删：	DELETE FROM test where id=值
// 改:	UPDATE test SET name = 值,ps = 值 where id = 值
// 查:	SELECT 查询结果的字段名称 FROM 表名


// MySQL数据库操作-增加
function add(id, name, ps) {
    var addSql = 'INSERT INTO test(id,name,ps)VALUES(?,?,?)';
    var addSqlParams = [id, name, ps];
    connection.query(addSql, addSqlParams, function (err, result) {
        if (err) {
            console.log('[插入异常] - ', err.message);
            return;
        }
        console.log(result, '\n');
    });
}

// MySQL数据库操作-删
function del(id) {
    connection.query(`DELETE FROM test where id='${id}'`, function (err, result) {
        if (err) {
            console.log('[删除异常] - ', err.message);
            return;
        }
    });
}

// MySQL数据库操作-改
function update(id, name, ps) {
    var modSql = 'UPDATE test SET name = ?,ps = ? where id = ?';
    var modSqlParams = [name, ps, id];
    connection.query(modSql, modSqlParams, function (err, result) {
        if (err) {
            console.log('[更新异常] - ', err.message);
            return;
        }
    });
}



// 增
app.post('/user:id:name:ps', function (request, reply) {
    console.log(request.body)
    add(request.body.id, request.body.name, request.body.ps)
    return request.body
})

// 删
app.delete('/del:id', function (request, reply) {
    console.log('删除id', request.query)
    del(request.query.id)
    return '执行删除'
})

// 改
app.put('/update:id:name:ps', function (request, reply) {
    console.log('待更改数据', request.body)
    update(request.body.id, request.body.name, request.body.ps)
    return '更改数据'
})

// 查所有
app.get('/sel', function (request, reply) {
    console.log('查询所有')
    // MySQL数据库操作-查询
    connection.query(`SELECT * FROM test`, function (error, results) {
        if (error){
            console.log(error.message)
            return
        };
        console.log('查询成功', results);
        reply.send(results)
    });
})



// 服务器启动参数设定
app.listen({
    port: 3000,
    host: '0.0.0.0'
}).then((addr) => {
    // 服务器启动的回调
    console.log(`服务器访问地址： ${addr}`)
})



// 备份代码
// connection.connect((err) => {
//   if (err) throw err
//   console.log('数据库连接成功')
// })
// SQL处理函数放这中间
// connection.end((err) => {
//   if (err) throw err
//   console.log('数据库断开连接')
// })